perm filename G6[KID,KMC] blob
sn#122905 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE G6
;THIS MEMBER PROGRAM OF THE NEW KIDS SUITE SHOWS WORD CONSTRUCTION
EXTERNAL MAINLP,DPINIT,PDPGET,CLEAR,SHOW,AIVECT,CHINIT
EXTERNAL LV2,KILL,TYOPTR,TIKCNT,DDRREL,DMDDIR,SPEAK
INTERNAL DOTHNG,GAMNAM,GAMENO,DIRECT
X1←6
X2 ← X1+1
X3 ← X2+1
X4 ← X3+1
X5 ← X4+1
X6 ← X5+1
P←17
A←13 ;SAME AS X6
B←14
C←15
GAMNAM: SIXBIT /GAME6/
GAMENO: 000600000000 ;GAME NUMBER FOR HISTORY FILE
DIRECT: BLOCK =281 ;ALLOW FOR 140 ENTRIES.
DOTHNG: ;ELIMINATE MOST OF THE NON-ALPHANUMERICS.
CAILE X1,132
JRST MAINLP ;REJECT CHARCTERS ABOVE ALPHABET.
CAIGE X1,060
JRST MAINLP ;REJECT CHARACTERS BELOW DIGITS.
SUBI X1,040 ;RECODE TO SIXBIT
PUSHJ P,CLEAR ;CLEAR BUFFER.
MOVE A,[SIXBIT /FRAME6/]
PUSHJ P,PDPGET
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
HALT]
MOVEI A,1 ;INDICATE P.O.G. 1
PUSHJ P,SHOW
MOVE A,[SIXBIT /TRUM6/]
PUSHJ P,DMDDIR
JUMPN A,.+2 ;DON'T SPEAK AFTER ERROR FLAG
PUSHJ P,SPEAK
MOVE A,[SIXBIT /HERE6/]
PUSHJ P,DMDDIR
JUMPN A,.+2 ;DON'T SPEAK AFTER ERROR FLAG
PUSHJ P,SPEAK
MOVE A,TABLE1(X1)
PUSHJ P,DMDDIR
JUMPN A,.+2 ;DON'T SPEAK AFTER ERROR FLAG
PUSHJ P,SPEAK
MOVEI X2,0 ;CHARACTERS SHOWABLE SO FAR
MOVE X3,TABLE2(X1) ;CHARACTERS TO BE SHOWN
LETRLP: ;LETTER LOOP - ONCE AROUND FOR EACH OF THE LETTERS IN THE WORD
JUMPE X3,LTRLPX ;ESCAPE WHEN NO LETTERS LEFT
LSHC X2,6 ;SHIFT NEXT CHARCTER TO SHOWABLE LIST
MOVE X4,X2
ANDI X4,77 ;GET NEW CHARACTER
MOVE X5,X4 ;COPY IT
LSH X5,=30
OR X5,[SIXBIT / FRAM6/]
PUSHJ P,CLEAR
MOVE A,X5 ;*FRAM6
PUSHJ P,PDPGET ;LOOKUP DIRECTORY
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /*FRAM6 NOT FINDABLE/]
HALT]
MOVEI A,1
PUSHJ P,SHOW ;*FRAM6 ON POG 1
PUSHJ P,CLEAR ;CLEAR BUFFER.
MOVE A,[SIXBIT /FRAME6/]
PUSHJ P,PDPGET
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
HALT]
MOVEI A,1 ;INDICATE P.O.G. 1
PUSHJ P,SHOW
PUSHJ P,CLEAR
MOVE A,X5 ;*FRAM6
PUSHJ P,PDPGET ;LOOKUP DIRECTORY
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /*FRAM6 NOT FINDABLE/]
HALT]
MOVEI A,1
PUSHJ P,SHOW ;*FRAM6 ON POG 1
PUSHJ P,CLEAR ;CLEAR BUFFER.
MOVE A,[SIXBIT /FRAME6/]
PUSHJ P,PDPGET
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
HALT]
MOVEI A,1 ;INDICATE P.O.G. 1
PUSHJ P,SHOW
PUSHJ P,CLEAR
MOVE A,X5 ;*FRAM6
PUSHJ P,PDPGET ;LOOKUP DIRECTORY
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /*FRAM6 NOT FINDABLE/]
HALT]
MOVEI A,1
PUSHJ P,SHOW ;*FRAM6 ON POG 1
MOVE A,X4 ;GET THE LETTER AGAIN
LSH A,=30 ;PUT IN TOP OF WORD
OR A,[SIXBIT / 1/]
PUSHJ P,DMDDIR ;LOOKUP *1.DMD
CAIN A,0
PUSHJ P,SPEAK ;SAY THE LETTER.
MOVEI X5,0 ;INITIALLY NO FRAMES OF MOVIE SHOWN
MOVIEL: ADDI X5,1 ;PREPARE TO SHOW NEXT FRAME
CAMLE X5,TABLE3(X4) ;TEST FOR END OF MOVIE
JRST MOVIEX ;ESCAPE LOOP
PUSHJ P,CLEAR ;CLEAR BUFFER
MOVE A,X5 ;COPY FRAME NUMBER
ADDI A,020 ;MAKE IT A SIXBIT DIGIT
LSH A,6
OR A,X4 ;PUT IN THE MOVIE NAME(A LETTER)
LSH A,6 ;REG A NOW HAS SIXBIT FORM / DL /
OR A,[SIXBIT /MOV 6/]
PUSHJ P,PDPGET ;LOOK FOR /MOVDL6/ IN DIRECTORY
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /SOME FILE MOV**6 NOT LOCATABLE/]
HALT]
MOVE A,TIKCNT ;TIME SINCE LAST FRAME DISPAYED
ADDI A,7
JUMPL A,.+4 ;CARRY ON IF A SIXTH OF A SECOND PASSED
MOVEI A,0
CALL A,[SIXBIT /SLEEP/]
JRST .-5
MOVEI A,2 ;INDICATE P.O.G. 2
PUSHJ P,SHOW ;MOV**6 SHOWS ON POG 2
SETZM TIKCNT
JRST MOVIEL ;DITTO FOR NEXT FRAME IN MOVIE
MOVIEX: MOVEI A,2
PUSHJ P,KILL ;KILL POG 2
PUSHJ P,CLEAR ;CLEAR BUFFER
MOVEI A,=-130
MOVEI B,0
PUSHJ P,AIVECT ;AIVECT(-130,0)
MOVEI A,0
MOVEI B,0
MOVEI C,46
MOVEI 0,7
DPB 0,[POINT 3,C,27]
PUSHJ P,LV2 ;GVECT(0,0,46,7,0)
MOVEI A,7
MOVEI B,=1000
MOVEI C,=-500
PUSHJ P,CHINIT ;CHINIT(7,1000,-500)
MOVE X5,X2 ;COPY LIST OF CHARACTERS TO BE SHOWN
WDLOOP: ;LOOP TO SHOW PARTIAL WORD
JUMPE X5,WDLPX ;ESCAPE LOOP WHEN ALL CHARACTERS OUTPUT
MOVEI X4,0
LSHC X4,6 ;GET TOP CHARACTER INTO X4
JUMPE X4,WDLOOP ;IGNORE THE LEADING SPACES.
ADDI X4,040 ;CONVERT LETTER FROM SIXBIT TO ASCII
IDPB X4,TYOPTR ;PUT CHARACTER IN BUFFER
JRST WDLOOP
WDLPX: ;ALL LETTERS ARE IN THE BUFFER.
MOVEI A,3
PUSHJ P,SHOW ;SHOW PARTIAL WORD ON POG3
JRST LETRLP ;CONSIDER NEXT LETTER, IF ANY
LTRLPX: ;ALL MOVIES HAVE BEEN SHOWN
PUSHJ P,CLEAR ;CLEAR BUFFER.
MOVE A,[SIXBIT /FRAME6/]
PUSHJ P,PDPGET
JUMPN A,[MOVEI A,0
MOVEI B,=2561
PUSHJ P,DPINIT
OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
HALT]
MOVEI A,1 ;INDICATE P.O.G. 1
PUSHJ P,SHOW
MOVE A,TABLE1(X1)
PUSHJ P,DMDDIR
JUMPN A,.+2 ;DON'T SPEAK AFTER ERROR FLAG
PUSHJ P,SPEAK
JRST MAINLP
LIST1: SIXBIT /N01/
SIXBIT /N11/
SIXBIT /N21/
SIXBIT /N31/
SIXBIT /N41/
SIXBIT /N51/
SIXBIT /N61/
SIXBIT /N71/
SIXBIT /N81/
SIXBIT /N91/
0
0
0
0
0
0
0
SIXBIT /ANT6/
SIXBIT /BALL6/
SIXBIT /CAT6/
SIXBIT /DOG6/
SIXBIT /EGG6/
SIXBIT /FISH6/
SIXBIT /GO6/
SIXBIT /HAT6/
SIXBIT /ICE6/
SIXBIT /JUMP6/
SIXBIT /KISS6/
SIXBIT /LOVE6/
SIXBIT /ME6/
SIXBIT /NUT6/
SIXBIT /OWL6/
SIXBIT /PIE6/
SIXBIT /QUAC6/
SIXBIT /RUN6/
SIXBIT /SING6/
SIXBIT /TV6/
SIXBIT /UP6/
SIXBIT /VERY6/
SIXBIT /WHAL6/
SIXBIT /XYZ6/
SIXBIT /YES6/
SIXBIT /ZAP6/
TABLE1←LIST1-20
LIST2: SIXBIT /ZERO/
SIXBIT /ONE/
SIXBIT /TWO/
SIXBIT /THREE/
SIXBIT /FOUR/
SIXBIT /FIVE/
SIXBIT /SIX/
SIXBIT /SEVEN/
SIXBIT /EIGHT/
SIXBIT /NINE/
0
0
0
0
0
0
0
SIXBIT /ANT/
SIXBIT /BALL/
SIXBIT /CAT/
SIXBIT /DOG/
SIXBIT /EGG/
SIXBIT /FISH/
SIXBIT /GO/
SIXBIT /HAT/
SIXBIT /ICE/
SIXBIT /JUMP/
SIXBIT /KISS/
SIXBIT /LOVE/
SIXBIT /ME/
SIXBIT /NUT/
SIXBIT /OWL/
SIXBIT /PIE/
SIXBIT /QUACK/
SIXBIT /RUN/
SIXBIT /SING/
SIXBIT /TV/
SIXBIT /UP/
SIXBIT /VERY/
SIXBIT /WHALE/
SIXBIT /XYZ/
SIXBIT /YES/
SIXBIT /ZAP/
TABLE2←LIST2-20
LTHS: 4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
9
TABLE3←LTHS-41
END